using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using QLHXNK.BusinessLogic;

namespace QLHXNK.Forms
{
    public partial class NewFrmDichVu : Form
    {
        int action = -1;
        int actionImportNote = 0;

        private ImportNote importNote;
        private ImportNote[] arrImportNoteDeleted = new ImportNote[100];
        private ImportNoteDetail[] arrImportNoteDetailExist = new ImportNoteDetail[100];
        private ImportNoteDetail[] arrImportNoteDetailDeleted = new ImportNoteDetail[100];

        private int ImportNoteDetailExistCount = 0;
        private int ImportNoteDetailDeletedCount = 0;
        private int ImportNoteDeleteCount = 0;

        private int isValidateData = 0;

        private bool isGetImportNote = true;
        private bool isRollBackData = false;
        private bool isUpdateImportNoteDetail = false;
        private bool flagAction = true;

        private bool isActionValueChange = true;

        /// <summary>
        /// Cho phép chọn dòng trên Datagridview
        /// </summary>
        private bool isAllowSelection = true;      

        public NewFrmDichVu()
        {
            InitializeComponent();
            this.CenterToScreen();
            TenHang.DataSource = Item.ListItem();
            TenHang.DisplayMember = "item_name";
        }

        private void btnThoat_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void NewFrmDichVu_Load(object sender, EventArgs e)
        {
            lbKetQua.Visible = false;
            isGetImportNote = false;
            dtpNgayDonHang.Value = DateTime.Now;
            isGetImportNote = true;
            DataTable dtImportNote = ImportNote.ListImportNote(1);
            dgvKetQuaNDH.DataSource = dtImportNote;
            if (dtImportNote.Rows.Count == 0)
            {
                btnXoa.Enabled = false;
                btnSua.Enabled = false;
                txtSoDonHang.Text = ImportNote.GetImportNoteNo(DateTime.Now);
            }
        }

        private void dtpNgayDonHang_ValueChanged(object sender, EventArgs e)
        {
            if (isGetImportNote == true && actionImportNote == 0)
                txtSoDonHang.Text = ImportNote.GetImportNoteNo(dtpNgayDonHang.Value);
            if (actionImportNote == 2)
                btnLuu.Enabled = true;
        }

        #region-----------------------------Sự kiện trên Datagridview nhập đơn hàng--------------------------------

        private void dgvKetQuaNDH_SelectionChanged(object sender, EventArgs e)
        {
            if (isAllowSelection == true)
            {
                lbKetQua.Visible = false;
                DataGridViewSelectedRowCollection rows = dgvKetQuaNDH.SelectedRows;
                if (rows.Count == 1)
                {
                    DataGridViewRow row = rows[0];
                    if (row.Cells["SoDonHang"].Value != null && row.Cells["SoDonHang"].Value.ToString() != "")
                    {
                        ImportNoteDeleteCount = 1;
                        arrImportNoteDeleted[0] = new ImportNote(Int32.Parse(row.Cells["ImportNoteID"].Value.ToString()), row.Cells["SoDonHang"].Value.ToString(), DateTime.Now, 0, "");

                        double exchangeRate = 0;
                        if (row.Cells["TyGia"].Value != null && row.Cells["TyGia"].Value.ToString() != "")
                            exchangeRate = double.Parse(row.Cells["TyGia"].Value.ToString());

                        importNote = new ImportNote(Int32.Parse(row.Cells["ImportNoteID"].Value.ToString()), row.Cells["SoDonHang"].Value.ToString(), DateTime.Parse(row.Cells["NgayDonHang"].Value.ToString()),
                                                    exchangeRate, row.Cells["GhiChu"].Value.ToString());

                        txtSoDonHang.Text = row.Cells["SoDonHang"].Value.ToString();
                        isGetImportNote = false;
                        dtpNgayDonHang.Value = DateTime.Parse(row.Cells["NgayDonHang"].Value.ToString());
                        isGetImportNote = true;
                        txtTyGia.Text = row.Cells["TyGia"].Value.ToString();

                        DataTable dtImportNoteDetail = ImportNoteDetail.GetImportNoteDetailByImportNote(Int32.Parse(row.Cells["ImportNoteID"].Value.ToString()));
                        dgvNhapHangKinhDoanh.DataSource = dtImportNoteDetail;

                        ImportNoteDetailExistCount = 0;
                        for (int i = 0; i < dtImportNoteDetail.Rows.Count; i++)
                        {

                            arrImportNoteDetailExist[ImportNoteDetailExistCount] = new ImportNoteDetail(
                                                                Int32.Parse(dtImportNoteDetail.Rows[i]["ID"].ToString().Replace(",", "")),
                                                                Int32.Parse(dtImportNoteDetail.Rows[i]["import_note_id"].ToString().Replace(",", "")),
                                                                Int32.Parse(dtImportNoteDetail.Rows[i]["item_id"].ToString().Replace(",", "")),
                                                                Int32.Parse(dtImportNoteDetail.Rows[i]["quantity"].ToString().Replace(",", "")),
                                                                double.Parse(dtImportNoteDetail.Rows[i]["fob_usd"].ToString()),
                                                                double.Parse(dtImportNoteDetail.Rows[i]["fob_eur"].ToString()),
                                                                double.Parse(dtImportNoteDetail.Rows[i]["cif_usd"].ToString()),
                                                                double.Parse(dtImportNoteDetail.Rows[i]["cif_eur"].ToString()),
                                                                double.Parse(dtImportNoteDetail.Rows[i]["kr_fee"].ToString()),
                                                                double.Parse(dtImportNoteDetail.Rows[i]["hk_fee"].ToString()),
                                                                double.Parse(dtImportNoteDetail.Rows[i]["ita_fee"].ToString()),
                                                                double.Parse(dtImportNoteDetail.Rows[i]["tl_fee"].ToString()),
                                                                double.Parse(dtImportNoteDetail.Rows[i]["other_country_fee"].ToString()),
                                                                Int32.Parse(dtImportNoteDetail.Rows[i]["ut_fee"].ToString().Replace(",", "")),
                                                                Int32.Parse(dtImportNoteDetail.Rows[i]["vat_fee"].ToString().Replace(",", "")),
                                                                Int32.Parse(dtImportNoteDetail.Rows[i]["tax_fee"].ToString().Replace(",", "")),
                                                                Int32.Parse(dtImportNoteDetail.Rows[i]["other_fee"].ToString().Replace(",", "")),
                                                                double.Parse(dtImportNoteDetail.Rows[i]["net1"].ToString()),
                                                                double.Parse(dtImportNoteDetail.Rows[i]["net2"].ToString()),
                                                                double.Parse(dtImportNoteDetail.Rows[i]["selling_price"].ToString()),
                                                                double.Parse(dtImportNoteDetail.Rows[i]["profit1"].ToString()),
                                                                double.Parse(dtImportNoteDetail.Rows[i]["profit2"].ToString()));
                            ImportNoteDetailExistCount++;
                            isActionValueChange = false;
                            rollBackDataOnRow(i);
                            isActionValueChange = true;
                        }
                        btnXoa.Enabled = true;
                        btnSua.Enabled = true;
                        btnLuu.Enabled = false;
                        actionImportNote = -1;
                        Disable();
                    }
                    else
                    {
                        txtSoDonHang.Text = "";
                        txtTyGia.Text = "";
                        dtpNgayDonHang.Value = DateTime.Now;
                        DataTable dtImportNoteDetail = ImportNoteDetail.GetImportNoteDetailByImportNote(0);
                        dgvNhapHangKinhDoanh.DataSource = dtImportNoteDetail;
                    }
                }
                else //if (rows.Count > 1)
                {
                    if (actionImportNote == 2 || actionImportNote == 0)
                    {
                        actionImportNote = -1;
                        Disable();
                        lbKetQua.Visible = false;
                        btnXoa.Enabled = true;
                        btnLuu.Enabled = false;
                    }
                    ImportNoteDeleteCount = 0;
                    for (int i = 0; i < rows.Count; i++)
                    {
                        DataGridViewRow row = rows[i];
                        arrImportNoteDeleted[ImportNoteDeleteCount++] = new ImportNote(Int32.Parse(row.Cells["ImportNoteID"].Value.ToString()), row.Cells["SoDonHang"].Value.ToString(), DateTime.Now, 0, "");
                    }
                    txtSoDonHang.Text = "";
                    txtTyGia.Text = "";
                    DataTable dtImportNoteDetail = ImportNoteDetail.GetImportNoteDetailByImportNote(0);
                    dgvNhapHangKinhDoanh.DataSource = dtImportNoteDetail;
                }
            }
        }

        private void dgvKetQuaNDH_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyValue == 46)
            {
                if (actionImportNote != 0 && actionImportNote != 2 && ImportNoteDeleteCount > 0)
                {
                    DialogResult result = DialogResult;
                    if (ImportNoteDeleteCount == 1)
                        result = MessageBox.Show("Bạn muốn xoá hoá đơn Mã: " + arrImportNoteDeleted[0].Code + "", "Xoá", MessageBoxButtons.YesNo);
                    if (ImportNoteDeleteCount > 1)
                        result = MessageBox.Show("Bạn muốn xoá danh sách hoá đơn này", "Xoá", MessageBoxButtons.YesNo);
                    if (result == System.Windows.Forms.DialogResult.Yes)
                    {
                        for (int i = 0; i < ImportNoteDeleteCount; i++)
                        {
                            int kq = arrImportNoteDeleted[i].DeleteImportNote();
                        }
                        dgvKetQuaNDH.DataSource = ImportNote.ListImportNote(1);
                        if (dgvKetQuaNDH.Rows.Count == 0)
                            ThemMoi();
                    }
                }
            }
        }

        #endregion


        #region----------------------------sự kiện trên Datagridview nhập hàng kinh doanh--------------------------

        private void dgvNhapHangKinhDoanh_CellValueChanged(object sender, DataGridViewCellEventArgs e)
        {
            if (isActionValueChange == true)
            {
                if (e.ColumnIndex == 1 && e.RowIndex != -1 && dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["TenHang"].Value != null && dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["TenHang"].Value.ToString() != "")
                {
                    if (action == 0 || action == 2)
                    {
                        for (int i = 0; i < dgvNhapHangKinhDoanh.Rows.Count; i++)
                        {
                            if (i != e.RowIndex && dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["TenHang"].Value != null && dgvNhapHangKinhDoanh.Rows[i].Cells["TenHang"].Value != null)
                                if (dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["TenHang"].Value.ToString() == dgvNhapHangKinhDoanh.Rows[i].Cells["TenHang"].Value.ToString())
                                {
                                    DialogResult result = DialogResult;
                                    result = MessageBox.Show("Đã có hàng này trong chi tiết nhập hàng, Bạn muốn thêm???", "Cảnh báo", MessageBoxButtons.YesNo);
                                    if (result == System.Windows.Forms.DialogResult.No)
                                    {
                                        dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["TenHang"].Value = "";
                                        action = -1;
                                        return;
                                    }
                                    else
                                        break;
                                }
                        }
                        DataTable dtItem = Item.GetItemByName(dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["TenHang"].Value.ToString());
                        if (dtItem.Rows.Count > 0)
                        {
                            dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["ItemID"].Value = dtItem.Rows[0]["ID"].ToString();
                        }
                    }
                    else
                    {
                        DataTable dtItem = Item.GetItemByName(dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["TenHang"].Value.ToString());
                        if (dtItem.Rows.Count > 0)
                        {
                            dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["ItemID"].Value = dtItem.Rows[0]["ID"].ToString();
                        }
                    }

                }
                if (isRollBackData == false)
                {
                    if (e.ColumnIndex >= 3 && e.ColumnIndex <= 11 && e.RowIndex != -1 && (action == 0 || action == 2))
                    {
                        double dvnn = 0;
                        double kr = 0, hk = 0, italy = 0, tl = 0, khac = 0;

                        double fob = 0, cif = 0;
                        kr = StringToNumber(dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["KOREANhap"].Value);
                        hk = StringToNumber(dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["HKNhap"].Value);
                        italy = StringToNumber(dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["ITALYNhap"].Value);
                        tl = StringToNumber(dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["TLNhap"].Value);
                        khac = StringToNumber(dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["KHACNhap"].Value);
                        dvnn = kr + hk + italy + tl + khac;

                        if (dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["FOBUSDNhap"].Value != null && dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["FOBUSDNhap"].Value.ToString() != "")
                        {
                            fob = StringToNumber(dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["FOBUSDNhap"].Value);
                        }
                        else
                            if (dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["FOBEURNhap"].Value != null && dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["FOBEURNhap"].Value.ToString() != "")
                            {
                                fob = StringToNumber(dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["FOBEURNhap"].Value);
                            }

                        if (dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["CIFUSDNhap"].Value != null && dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["CIFUSDNhap"].Value.ToString() != "")
                        {
                            cif = StringToNumber(dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["CIFUSDNhap"].Value);
                        }
                        else
                            if (dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["CIFEURNhap"].Value != null && dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["CIFEURNhap"].Value.ToString() != "")
                            {
                                cif = StringToNumber(dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["CIFEURNhap"].Value);
                            }
                        dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["NET1Nhap"].Value = String.Format("{0:#,0.##}", ((fob * (double.Parse(txtTyGia.Text)) + dvnn) * 1.00));
                        dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["NET2Nhap"].Value = String.Format("{0:#,0.##}", ((cif * (double.Parse(txtTyGia.Text)) + dvnn) * 1.00));
                    }
                    if (e.ColumnIndex == 12 && e.RowIndex != -1)
                    {
                        if (dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["GiaBanNhap"].Value != null && dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["GiaBanNhap"].Value.ToString() != ""
                            && dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["NET1Nhap"].Value != null && dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["NET1Nhap"].Value.ToString() != "")
                        {
                            double sellingPrice = 0;
                            try
                            {
                                sellingPrice = double.Parse(dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["GiaBanNhap"].Value.ToString());
                            }
                            catch { return; }
                            double net1 = double.Parse(dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["NET1Nhap"].Value.ToString());
                            dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["Profit1Nhap"].Value = String.Format("{0:#,0.##}", ((((sellingPrice - net1) * 100) / net1) * 1.00)) + " %";
                        }
                        if (action == -1 && actionImportNote == 2)
                            isUpdateImportNoteDetail = true;
                    }
                    if (e.ColumnIndex == 13 && e.RowIndex != -1)
                    {
                        if (dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["GiaBanNhap"].Value != null && dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["GiaBanNhap"].Value.ToString() != ""
                            && dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["NET2Nhap"].Value != null && dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["NET2Nhap"].Value.ToString() != "")
                        {
                            double sellingPrice = 0;
                            try
                            {
                                sellingPrice = double.Parse(dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["GiaBanNhap"].Value.ToString());
                            }
                            catch { return; }
                            double net2 = double.Parse(dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["NET2Nhap"].Value.ToString());
                            dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["Profit2Nhap"].Value = String.Format("{0:#,0.##}", (((sellingPrice - net2) * 100) / net2) * 1.00) + " %";
                        }
                        if (action == -1 && actionImportNote == 2)
                            isUpdateImportNoteDetail = true;
                    }
                    if (e.ColumnIndex == 14 && e.RowIndex != -1 && (action == 0 || action == 2))
                    {
                        if (dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["GiaBanNhap"].Value != null && dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["GiaBanNhap"].Value.ToString() != "")
                        {
                            double gbtmp = StringToNumber(dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["GiaBanNhap"].Value);
                            double net1tmp = StringToNumber(dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["NET1Nhap"].Value);
                            double net2tmp = StringToNumber(dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["NET2Nhap"].Value);
                            dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["Profit1Nhap"].Value = String.Format("{0:#,0.##}", ((((gbtmp - net1tmp) * 100) / net1tmp) * 1.00)) + " %";
                            dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["Profit2Nhap"].Value = String.Format("{0:#,0.##}", ((((gbtmp - net2tmp) * 100) / net2tmp) * 1.00)) + " %";
                        }
                    }
                }
            }
        }

        private void dgvNhapHangKinhDoanh_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
        {
            lbKetQua.Visible = false;
            if (e.RowIndex != -1)
            {
                if (dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["ID"].Value != null && dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["ID"].Value.ToString() != "")
                    action = 2;
                else
                    action = 0;
            }
        }

        private void dgvNhapHangKinhDoanh_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyValue == 46)
            {
                if (ImportNoteDetailDeletedCount != 0)
                {
                    DialogResult result = DialogResult;
                    if (ImportNoteDetailDeletedCount == 1)
                        result = MessageBox.Show("Bạn muốn xoá chi tiết này", "Xoá", MessageBoxButtons.YesNo);
                    if (ImportNoteDetailDeletedCount > 1)
                        result = MessageBox.Show("Bạn muốn xoá danh sách chi tiết này", "Xoá", MessageBoxButtons.YesNo);
                    if (result == System.Windows.Forms.DialogResult.Yes)
                    {
                        dgvNhapHangKinhDoanh.AllowUserToDeleteRows = true;
                        int importNoteID = arrImportNoteDetailExist[0].ImportNote;
                        for (int i = 0; i < ImportNoteDetailDeletedCount; i++)
                        {
                            int kq = arrImportNoteDetailDeleted[i].DeleteImportNoteDetail();
                            if (kq == 1)
                                DeleteArrImportNoteDetailExist(arrImportNoteDetailDeleted[i].ID);
                        }
                        DataTable dtImportNoteDetail = ImportNoteDetail.GetImportNoteDetailByImportNote(importNoteID);
                        dgvNhapHangKinhDoanh.DataSource = dtImportNoteDetail;
                        for (int i = 0; i < dtImportNoteDetail.Rows.Count; i++)
                            rollBackDataOnRow(i);
                        ImportNoteDetailDeletedCount = 0;
                    }
                    else
                        dgvNhapHangKinhDoanh.AllowUserToDeleteRows = false;
                }
            }
            else
                NewFrmDichVu_KeyDown(this, e);
        }

        private void dgvNhapHangKinhDoanh_RowValidated(object sender, DataGridViewCellEventArgs e)
        {
            if (action != -1 && flagAction == true)
            {
                int itemID = 0, quantity = 0;//, UT = 0, VAT = 0, TAX = 0, other = 0;
                double FOBUSD = 0, FOBEUR = 0, CIFUSD = 0, CIFEUR = 0, KOREA = 0, HK = 0, ITALY = 0, TL = 0, otherCountry = 0, NET1 = 0,
                        NET2 = 0, sellingPrice = 0, profit1 = 0, profit2 = 0;

                GetDataOnDGVNhapHangKD(e.RowIndex, ref itemID, ref quantity, ref FOBUSD, ref FOBEUR, ref CIFUSD, ref CIFEUR, ref KOREA, ref HK, ref ITALY,
                                        ref TL, ref otherCountry, ref NET1, ref NET2, ref sellingPrice, ref profit1, ref profit2);

                if (action == 0 && actionImportNote != 0)
                {

                    if (isValidateData == 0)
                    {
                        arrImportNoteDetailExist[ImportNoteDetailExistCount++] = ImportNoteDetail.CreateImportNoteDetail(importNote.ID,
                                                                itemID, quantity, FOBUSD, FOBEUR, CIFUSD, CIFEUR, KOREA, HK,
                                                                ITALY, TL, otherCountry, 0, 0, 0, 0, NET1, NET2, sellingPrice,
                                                                profit1, profit2);
                        if (arrImportNoteDetailExist[ImportNoteDetailExistCount - 1] == null)
                            MessageBox.Show("Chưa thêm hàng nay được, vui lòng thử lại sau");
                        else
                            ShowNote("Thêm thành công chi tiết của đơn hàng ", Color.Blue);
                    }
                    else
                        ShowErrorImputData(e.RowIndex + 1);
                }
                if (action == 2 )
                {
                    if (isValidateData == 0)
                    {
                        int i;
                        for (i = 0; i < ImportNoteDetailExistCount; i++)
                        {
                            if (arrImportNoteDetailExist[i].ID.ToString() == dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["ID"].Value.ToString())
                                break;
                        }
                        int kq = arrImportNoteDetailExist[i].UpdateImportNote(itemID, quantity, FOBUSD, FOBEUR, CIFUSD, CIFEUR, KOREA, HK,
                                                                ITALY, TL, otherCountry, 0, 0, 0, 0, NET1, NET2, sellingPrice,
                                                                profit1, profit2);
                        if (kq == 0)
                            MessageBox.Show("Chưa cập nhật thông tin được vui lòng thử lại sau");
                        else
                            ShowNote("Đã cập nhật thông tin cho chi tiết đơn hàng", Color.Blue);
                    }
                    else
                    {
                        ShowErrorImputData(e.RowIndex + 1);
                        isRollBackData = true;
                        rollBackDataOnRow(e.RowIndex);
                        isRollBackData = false;
                    }
                }
                action = -1;
            }
        }

        private void dgvNhapHangKinhDoanh_SelectionChanged(object sender, EventArgs e)
        {
            DataGridViewSelectedRowCollection rows = dgvNhapHangKinhDoanh.SelectedRows;
            if (rows.Count > 0)
            {
                ImportNoteDetailDeletedCount = 0;
                for (int i = 0; i < rows.Count; i++)
                {
                    DataGridViewRow row = rows[i];
                    if (row.Cells["ID"].Value != null && row.Cells["ID"].Value.ToString() != "")
                    {
                        arrImportNoteDetailDeleted[ImportNoteDetailDeletedCount++] = new ImportNoteDetail(Int32.Parse(row.Cells["ID"].Value.ToString()),
                                                        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
                    }
                }

            }
        }

        private void dgvNhapHangKinhDoanh_RowEnter(object sender, DataGridViewCellEventArgs e)
        {
            if (importNote != null && dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["TenHang"].Value != null
                && dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["TenHang"].Value.ToString() != "")
            {
                int indexOnDGV = 0;
                int i;
                for (i = 0; i < dgvNhapHangKinhDoanh.Rows.Count - 1; i++)
                {
                    if (i != e.RowIndex && i < e.RowIndex &&
                        dgvNhapHangKinhDoanh.Rows[i].Cells["TenHang"].Value.ToString() == dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["TenHang"].Value.ToString())
                        indexOnDGV++;
                }
                DataTable dtImportNoteDetailTmp = ImportNoteDetail.GetImportNoteDetailByImportNoteAndItem(importNote.ID, dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["TenHang"].Value.ToString());
                if (dtImportNoteDetailTmp.Rows.Count > indexOnDGV)
                {
                    dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["ID"].Value = dtImportNoteDetailTmp.Rows[indexOnDGV]["ID"].ToString();
                    dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["ImportNoteID1"].Value = importNote.ID;
                    dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["ItemCode"].Value = dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["MaHang"].Value;
                    dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["ItemName"].Value = dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["TenHang"].Value;
                    dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["ItemID"].Value = dtImportNoteDetailTmp.Rows[indexOnDGV]["item_id"].ToString();

                    dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["SoLuong"].Value = Int32.Parse(dtImportNoteDetailTmp.Rows[indexOnDGV]["quantity"].ToString());
                    dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["FOBUSD"].Value = double.Parse(dtImportNoteDetailTmp.Rows[indexOnDGV]["fob_usd"].ToString());
                    dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["FOBEUR"].Value = double.Parse(dtImportNoteDetailTmp.Rows[indexOnDGV]["fob_eur"].ToString());
                    dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["CIFUSD"].Value = double.Parse(dtImportNoteDetailTmp.Rows[indexOnDGV]["cif_usd"].ToString());
                    dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["CIFEUR"].Value = double.Parse(dtImportNoteDetailTmp.Rows[indexOnDGV]["cif_eur"].ToString());
                    dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["KOREA"].Value = double.Parse(dtImportNoteDetailTmp.Rows[indexOnDGV]["kr_fee"].ToString());
                    dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["HK"].Value = double.Parse(dtImportNoteDetailTmp.Rows[indexOnDGV]["hk_fee"].ToString());
                    dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["ITALY"].Value = double.Parse(dtImportNoteDetailTmp.Rows[indexOnDGV]["ita_fee"].ToString());
                    dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["TL"].Value = double.Parse(dtImportNoteDetailTmp.Rows[indexOnDGV]["tl_fee"].ToString());
                    dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["KHAC"].Value = double.Parse(dtImportNoteDetailTmp.Rows[indexOnDGV]["other_country_fee"].ToString());
                    dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["NET1"].Value = double.Parse(dtImportNoteDetailTmp.Rows[indexOnDGV]["net1"].ToString());
                    dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["NET2"].Value = double.Parse(dtImportNoteDetailTmp.Rows[indexOnDGV]["net2"].ToString());
                    dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["GiaBan"].Value = double.Parse(dtImportNoteDetailTmp.Rows[indexOnDGV]["selling_price"].ToString());
                    dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["Profit1"].Value = double.Parse(dtImportNoteDetailTmp.Rows[indexOnDGV]["profit1"].ToString());
                    dgvNhapHangKinhDoanh.Rows[e.RowIndex].Cells["Profit2"].Value = double.Parse(dtImportNoteDetailTmp.Rows[indexOnDGV]["profit2"].ToString());
                }
            }
        }

        private void dgvNhapHangKinhDoanh_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
        {
                try
                {
                    double.Parse(txtTyGia.Text);
                    dgvNhapHangKinhDoanh.ReadOnly = false;
                    NET1Nhap.ReadOnly = true;
                    NET2Nhap.ReadOnly = true;
                    Profit1Nhap.ReadOnly = true;
                    Profit2Nhap.ReadOnly = true;
                }
                catch
                {
                    dgvNhapHangKinhDoanh.ReadOnly = true;
                    errorProvider1.SetError(txtTyGia, "Tỷ gía không hợp lệ"); 
                }
        }

        #endregion


        #region--------------------------------------các hàm hổ trộ chức năng--------------------------------------

        /// <summary>
        /// Xoá ImportNoteDetail trong arrItemNoteDetai
        /// </summary>
        /// <param name="ID"></param>
        private void DeleteArrImportNoteDetailExist(int ID)
        {
            int i;
            for (i = 0; i < ImportNoteDetailExistCount; i++)
            {
                if (ID == arrImportNoteDetailExist[i].ID)
                {
                    ImportNoteDetailExistCount--;
                    break;
                }
            }
            for (int j = i; j < ImportNoteDetailExistCount; j++)
                arrImportNoteDetailExist[j] = arrImportNoteDetailExist[j + 1];

        }

        /// <summary>
        /// Lấy dữ liệu và kiểm tra tính hợp lệ dữ liệu nhập
        /// </summary>
        /// <param name="rowindex"></param>
        /// <param name="itemID"></param>
        /// <param name="quantity"></param>
        /// <param name="FOBUSD"></param>
        /// <param name="FOBEUR"></param>
        /// <param name="CIFUSD"></param>
        /// <param name="CIFEUR"></param>
        /// <param name="KOREA"></param>
        /// <param name="HK"></param>
        /// <param name="ITALY"></param>
        /// <param name="TL"></param>
        /// <param name="otherCountry"></param>
        /// <param name="UT"></param>
        /// <param name="VAT"></param>
        /// <param name="TAX"></param>
        /// <param name="other"></param>
        /// <param name="NET1"></param>
        /// <param name="NET2"></param>
        /// <param name="sellingPrice"></param>
        /// <param name="profit1"></param>
        /// <param name="profit2"></param>
        private void GetDataOnDGVNhapHangKD(int rowindex, ref int itemID, ref int quantity, ref double FOBUSD, ref double FOBEUR,
                                            ref double CIFUSD, ref double CIFEUR, ref double KOREA, ref double HK,
                                            ref double ITALY, ref double TL, ref double otherCountry, ref double NET1, ref double NET2, ref double sellingPrice,
                                            ref double profit1, ref double profit2)
        {
            isValidateData = 0;
            //ItemCode
            if (dgvNhapHangKinhDoanh.Rows[rowindex].Cells["TenHang"].Value != null && dgvNhapHangKinhDoanh.Rows[rowindex].Cells["TenHang"].Value.ToString() != "")
            {
                itemID = Int32.Parse(dgvNhapHangKinhDoanh.Rows[rowindex].Cells["ItemID"].Value.ToString());
            }
            else
            {
                isValidateData = 1;
                return;
            }

            //Quantity
            if (dgvNhapHangKinhDoanh.Rows[rowindex].Cells["SoLuongNhap"].Value != null && dgvNhapHangKinhDoanh.Rows[rowindex].Cells["SoLuongNhap"].Value.ToString() != "")
            {
                try
                {
                    quantity = Int32.Parse(dgvNhapHangKinhDoanh.Rows[rowindex].Cells["SoLuongNhap"].Value.ToString());
                }
                catch
                {
                    isValidateData = 2;
                    return;
                }
            }
            else
            {
                isValidateData = 2;
                return;
            }

            //FOBUSD
            if (dgvNhapHangKinhDoanh.Rows[rowindex].Cells["FOBUSDNhap"].Value != null && dgvNhapHangKinhDoanh.Rows[rowindex].Cells["FOBUSDNhap"].Value.ToString() != "")
            {
                try
                {
                    FOBUSD = double.Parse(dgvNhapHangKinhDoanh.Rows[rowindex].Cells["FOBUSDNhap"].Value.ToString());
                }
                catch { isValidateData = 3; return; }
            }
            else
            {
                FOBUSD = 0;
            }
            //FOBEUR
            if (dgvNhapHangKinhDoanh.Rows[rowindex].Cells["FOBEURNhap"].Value != null && dgvNhapHangKinhDoanh.Rows[rowindex].Cells["FOBEURNhap"].Value.ToString() != "")
            {
                try
                {
                    FOBEUR = double.Parse(dgvNhapHangKinhDoanh.Rows[rowindex].Cells["FOBEURNhap"].Value.ToString());
                }
                catch { isValidateData = 4; return; }
            }
            else
            {
                FOBEUR = 0;
            }

            //CIFUSD
            if (dgvNhapHangKinhDoanh.Rows[rowindex].Cells["CIFUSDNhap"].Value != null && dgvNhapHangKinhDoanh.Rows[rowindex].Cells["CIFUSDNhap"].Value.ToString() != "")
            {
                try
                {
                    CIFUSD = double.Parse(dgvNhapHangKinhDoanh.Rows[rowindex].Cells["CIFUSDNhap"].Value.ToString());
                }
                catch { isValidateData = 5; return; }
            }
            else
            {
                CIFUSD = 0;
            }
            //CIFEUR
            if (dgvNhapHangKinhDoanh.Rows[rowindex].Cells["CIFEURNhap"].Value != null && dgvNhapHangKinhDoanh.Rows[rowindex].Cells["CIFEURNhap"].Value.ToString() != "")
            {
                try
                {
                    CIFEUR = double.Parse(dgvNhapHangKinhDoanh.Rows[rowindex].Cells["CIFEURNhap"].Value.ToString());
                }
                catch { isValidateData = 6; return; }
            }
            else
            {
                CIFEUR = 0;
            }
            //KOREA
            if (dgvNhapHangKinhDoanh.Rows[rowindex].Cells["KOREANhap"].Value != null && dgvNhapHangKinhDoanh.Rows[rowindex].Cells["KOREANhap"].Value.ToString() != "")
            {
                try
                {
                    KOREA = double.Parse(dgvNhapHangKinhDoanh.Rows[rowindex].Cells["KOREANhap"].Value.ToString());
                }
                catch { isValidateData = 7; return; }
            }
            else
            {
                KOREA = 0;
            }
            //HK
            if (dgvNhapHangKinhDoanh.Rows[rowindex].Cells["HKNhap"].Value != null && dgvNhapHangKinhDoanh.Rows[rowindex].Cells["HKNhap"].Value.ToString() != "")
            {
                try
                {
                    HK = double.Parse(dgvNhapHangKinhDoanh.Rows[rowindex].Cells["HKNhap"].Value.ToString());
                }
                catch { isValidateData = 8; return; }
            }
            else
            {
                HK = 0;
            }

            //ITALY
            if (dgvNhapHangKinhDoanh.Rows[rowindex].Cells["ITALYNhap"].Value != null && dgvNhapHangKinhDoanh.Rows[rowindex].Cells["ITALYNhap"].Value.ToString() != "")
            {
                try
                {
                    ITALY = double.Parse(dgvNhapHangKinhDoanh.Rows[rowindex].Cells["ITALYNhap"].Value.ToString());
                }
                catch { isValidateData = 9; return; }
            }
            else
            {
                ITALY = 0;
            }

            //ITALY
            if (dgvNhapHangKinhDoanh.Rows[rowindex].Cells["TLNhap"].Value != null && dgvNhapHangKinhDoanh.Rows[rowindex].Cells["TLNhap"].Value.ToString() != "")
            {
                try
                {
                    TL = double.Parse(dgvNhapHangKinhDoanh.Rows[rowindex].Cells["TLNhap"].Value.ToString());
                }
                catch { isValidateData = 10; return; }
            }
            else
            {
                TL = 0;
            }

            //otherCountry
            if (dgvNhapHangKinhDoanh.Rows[rowindex].Cells["KHACNhap"].Value != null && dgvNhapHangKinhDoanh.Rows[rowindex].Cells["KHACNhap"].Value.ToString() != "")
            {
                try
                {
                    otherCountry = double.Parse(dgvNhapHangKinhDoanh.Rows[rowindex].Cells["KHACNhap"].Value.ToString());
                }
                catch { isValidateData = 11; return; }
            }
            else
            {
                otherCountry = 0;
            }
            //UT
            //if (dgvNhapHangKinhDoanh.Rows[rowindex].Cells["UTNhap"].Value != null && dgvNhapHangKinhDoanh.Rows[rowindex].Cells["UTNhap"].Value.ToString() != "")
            //{
            //    try
            //    {
            //        UT = Int32.Parse(dgvNhapHangKinhDoanh.Rows[rowindex].Cells["UTNhap"].Value.ToString());
            //        if (UT < 0 || UT > 100)
            //        {
            //            isValidateData = 12;
            //            return;
            //        }
            //    }
            //    catch { isValidateData = 12; return; }
            //}
            //else
            //{
            //    UT = 0;
            //}

            ////VAT
            //if (dgvNhapHangKinhDoanh.Rows[rowindex].Cells["VATNhap"].Value != null && dgvNhapHangKinhDoanh.Rows[rowindex].Cells["VATNhap"].Value.ToString() != "")
            //{
            //    try
            //    {
            //        VAT = Int32.Parse(dgvNhapHangKinhDoanh.Rows[rowindex].Cells["VATNhap"].Value.ToString());
            //        if (VAT < 0 || VAT > 100)
            //        {
            //            isValidateData = 13;
            //            return;
            //        }
            //    }
            //    catch { isValidateData = 13; return; }
            //}
            //else
            //{
            //    VAT = 0;
            //}
            ////TAX
            //if (dgvNhapHangKinhDoanh.Rows[rowindex].Cells["TAXNhap"].Value != null && dgvNhapHangKinhDoanh.Rows[rowindex].Cells["TAXNhap"].Value.ToString() != "")
            //{
            //    try
            //    {
            //        TAX = Int32.Parse(dgvNhapHangKinhDoanh.Rows[rowindex].Cells["TAXNhap"].Value.ToString());
            //        if (TAX < 0 || TAX > 100)
            //        {
            //            isValidateData = 14;
            //            return;
            //        }
            //    }
            //    catch { isValidateData = 14; return; }
            //}
            //else
            //{
            //    TAX = 0;
            //}

            ////Other
            //if (dgvNhapHangKinhDoanh.Rows[rowindex].Cells["PhiKhacNhap"].Value != null && dgvNhapHangKinhDoanh.Rows[rowindex].Cells["PhiKhacNhap"].Value.ToString() != "")
            //{
            //    try
            //    {
            //        other = Int32.Parse(dgvNhapHangKinhDoanh.Rows[rowindex].Cells["PhiKhacNhap"].Value.ToString());
            //        if (other < 0 || other > 100)
            //        {
            //            isValidateData = 15;
            //            return;
            //        }
            //    }
            //    catch { isValidateData = 15; return; }
            //}
            //else
            //{
            //    other = 0;
            //}
            //NET1
            if (dgvNhapHangKinhDoanh.Rows[rowindex].Cells["NET1Nhap"].Value != null && dgvNhapHangKinhDoanh.Rows[rowindex].Cells["NET1Nhap"].Value.ToString() != "")
            {
                try
                {
                    NET1 = double.Parse(dgvNhapHangKinhDoanh.Rows[rowindex].Cells["NET1Nhap"].Value.ToString());
                }
                catch { isValidateData = 16; return; }
            }
            else
            {
                NET1 = 0;
            }
            //NET2
            if (dgvNhapHangKinhDoanh.Rows[rowindex].Cells["NET2Nhap"].Value != null && dgvNhapHangKinhDoanh.Rows[rowindex].Cells["NET2Nhap"].Value.ToString() != "")
            {
                try
                {
                    NET2 = double.Parse(dgvNhapHangKinhDoanh.Rows[rowindex].Cells["NET2Nhap"].Value.ToString());
                }
                catch { isValidateData = 17; return; }
            }
            else
            {
                NET2 = 0;
            }
            //SellingPrice
            if (dgvNhapHangKinhDoanh.Rows[rowindex].Cells["GiaBanNhap"].Value != null && dgvNhapHangKinhDoanh.Rows[rowindex].Cells["GiaBanNhap"].Value.ToString() != "")
            {
                try
                {
                    sellingPrice = double.Parse(dgvNhapHangKinhDoanh.Rows[rowindex].Cells["GiaBanNhap"].Value.ToString());
                }
                catch { isValidateData = 18; return; }
            }
            else
            {
                sellingPrice = 0;
            }
            //profit1
            if (dgvNhapHangKinhDoanh.Rows[rowindex].Cells["Profit1Nhap"].Value != null && dgvNhapHangKinhDoanh.Rows[rowindex].Cells["Profit1Nhap"].Value.ToString() != "")
            {
                try
                {
                    profit1 = double.Parse(dgvNhapHangKinhDoanh.Rows[rowindex].Cells["Profit1Nhap"].Value.ToString().Replace(" %",""));
                }
                catch { isValidateData = 19; return; }
            }
            else
            {
                profit1 = 0;
            }
            //profit2
            if (dgvNhapHangKinhDoanh.Rows[rowindex].Cells["Profit2Nhap"].Value != null && dgvNhapHangKinhDoanh.Rows[rowindex].Cells["Profit2Nhap"].Value.ToString() != "")
            {
                try
                {
                    profit2 = double.Parse(dgvNhapHangKinhDoanh.Rows[rowindex].Cells["Profit2Nhap"].Value.ToString().Replace(" %",""));
                }
                catch { isValidateData = 20; return; }
            }
            else
            {
                profit2 = 0;
            }
        }

        /// <summary>
        /// Chuyển hiển thị lên màng hình(từ Zero thành null)
        /// </summary>
        /// <param name="indexrow"></param>
        /// <param name="collumName"></param>
        /// <returns></returns>
        private String ChangeZeroToNull(int indexrow, String collumName)
        {
            if (dgvNhapHangKinhDoanh.Rows[indexrow].Cells[collumName].Value.ToString() == "0")
                return "";
            if (collumName == "NET1" || collumName == "NET2")
            {
                double valueTmp=double.Parse(dgvNhapHangKinhDoanh.Rows[indexrow].Cells[collumName].Value.ToString())*1.00;
                return valueTmp.ToString();
            }
            return dgvNhapHangKinhDoanh.Rows[indexrow].Cells[collumName].Value.ToString();
        }
        private double StringToNumber(Object str)
        {
            if (str == null)
                return 0;
            else
            {
                try
                {
                    return double.Parse(str.ToString());
                }
                catch { return 0; }
            }
        }

        /// <summary>
        /// Hiện thị lổi nhập dữ liệu
        /// </summary>
        /// <param name="indexRow"></param>
        private void ShowErrorImputData(int indexRow)
        {
            if (isValidateData == 1)
                MessageBox.Show("Bạn chưa chọn mặt hàng cho dòng thứ :" + indexRow);
            if (isValidateData == 2)
                MessageBox.Show("Bạn nhập số lượng hàng không hợp lệ cho dòng thứ :" + indexRow);
            if (isValidateData == 3)
                MessageBox.Show("Bạn nhập FOBUSD không hợp lệ cho dòng thứ :" + indexRow);
            if (isValidateData == 4)
                MessageBox.Show("Bạn nhập FOBUER không hợp lệ cho dòng thứ :" + indexRow);
            if (isValidateData == 5)
                MessageBox.Show("Bạn nhập CIFUSD không hợp lệ cho dòng thứ :" + indexRow);
            if (isValidateData == 6)
                MessageBox.Show("Bạn nhập CIFEUR không hợp lệ cho dòng thứ :" + indexRow);
            if (isValidateData == 7)
                MessageBox.Show("Bạn nhập KOREA FEE không hợp lệ cho dòng thứ :" + indexRow);
            if (isValidateData == 8)
                MessageBox.Show("Bạn nhập HK FEE không hợp lệ cho dòng thứ :" + indexRow);
            if (isValidateData == 9)
                MessageBox.Show("Bạn nhập ITALY FEE không hợp lệ cho dòng thứ :" + indexRow);
            if (isValidateData == 10)
                MessageBox.Show("Bạn nhập TL FEE không hợp lệ cho dòng thứ :" + indexRow);
            if (isValidateData == 11)
                MessageBox.Show("Bạn nhập FEE Quốc gia khác không hợp lệ cho dòng thứ :" + indexRow);
            //if (isValidateData == 12)
            //    MessageBox.Show("Bạn nhập UT không hợp lệ cho dòng thứ :" + indexRow);
            //if (isValidateData == 13)
            //    MessageBox.Show("Bạn nhập VAT không hợp lệ cho dòng thứ :" + indexRow);
            //if (isValidateData == 14)
            //    MessageBox.Show("Bạn nhập TAX không hợp lệ cho dòng thứ :" + indexRow);
            //if (isValidateData == 15)
            //    MessageBox.Show("Bạn nhập Phí khác không hợp lệ cho dòng thứ :" + indexRow);
            if (isValidateData == 16)
                MessageBox.Show("Bạn nhập NET1 không hợp lệ cho dòng thứ :" + indexRow);
            if (isValidateData == 17)
                MessageBox.Show("Bạn nhập NET2 không hợp lệcho dòng thứ :" + indexRow);
            if (isValidateData == 18)
                MessageBox.Show("Bạn nhập giá bán  không hợp lệcho dòng thứ :" + indexRow);
            if (isValidateData == 19)
                MessageBox.Show("Bạn nhập Profit1 không hợp lệ cho dòng thứ :" + indexRow);
            if (isValidateData == 20)
                MessageBox.Show("Bạn nhập Profit2 không hợp lệ cho dòng thứ :" + indexRow);
        }


        /// <summary>
        /// Trả lại dữ liệu gốc cho dòng indexrow
        /// </summary>
        /// <param name="indexrow"></param>
        private void rollBackDataOnRow(int indexrow)
        {
            dgvNhapHangKinhDoanh.Rows[indexrow].Cells["TenHang"].Value = dgvNhapHangKinhDoanh.Rows[indexrow].Cells["ItemName"].Value; 
            dgvNhapHangKinhDoanh.Rows[indexrow].Cells["SoLuongNhap"].Value = ChangeZeroToNull(indexrow, "SoLuong");
            dgvNhapHangKinhDoanh.Rows[indexrow].Cells["FOBUSDNhap"].Value = ChangeZeroToNull(indexrow, "FOBUSD");
            dgvNhapHangKinhDoanh.Rows[indexrow].Cells["FOBEURNhap"].Value = ChangeZeroToNull(indexrow, "FOBEUR");
            dgvNhapHangKinhDoanh.Rows[indexrow].Cells["CIFUSDNhap"].Value = ChangeZeroToNull(indexrow, "CIFUSD");
            dgvNhapHangKinhDoanh.Rows[indexrow].Cells["CIFEURNhap"].Value = ChangeZeroToNull(indexrow, "CIFEUR");
            dgvNhapHangKinhDoanh.Rows[indexrow].Cells["KOREANhap"].Value = ChangeZeroToNull(indexrow, "KOREA");
            dgvNhapHangKinhDoanh.Rows[indexrow].Cells["HKNhap"].Value = ChangeZeroToNull(indexrow, "HK");
            dgvNhapHangKinhDoanh.Rows[indexrow].Cells["ITALYNhap"].Value = ChangeZeroToNull(indexrow, "ITALY");
            dgvNhapHangKinhDoanh.Rows[indexrow].Cells["TLNhap"].Value = ChangeZeroToNull(indexrow, "TL");
            dgvNhapHangKinhDoanh.Rows[indexrow].Cells["KHACNhap"].Value = ChangeZeroToNull(indexrow, "KHAC");
            dgvNhapHangKinhDoanh.Rows[indexrow].Cells["NET1Nhap"].Value =  String.Format("{0:#,0.##}",ChangeZeroToNull(indexrow, "NET1"));
            dgvNhapHangKinhDoanh.Rows[indexrow].Cells["NET2Nhap"].Value = String.Format("{0:#,0.##}",ChangeZeroToNull(indexrow, "NET2"));

            dgvNhapHangKinhDoanh.Rows[indexrow].Cells["GiaBanNhap"].Value = String.Format("{0:#,0.##}",ChangeZeroToNull(indexrow, "GiaBan"));
            dgvNhapHangKinhDoanh.Rows[indexrow].Cells["Profit1Nhap"].Value = String.Format("{0:#,0.##}",dgvNhapHangKinhDoanh.Rows[indexrow].Cells["Profit1"].Value.ToString())+" %";
            dgvNhapHangKinhDoanh.Rows[indexrow].Cells["Profit2Nhap"].Value = String.Format("{0:#,0.##}", dgvNhapHangKinhDoanh.Rows[indexrow].Cells["Profit2"].Value.ToString()) + " %";
        }

        /// <summary>
        /// Load dữ liệu lên Datagridview
        /// </summary>
        private void LoadDataOnDataGridview()
        {
            DataTable dtImportNote = ImportNote.ListImportNote(1);
            int i, id;
            id = importNote.ID;
            isAllowSelection = false;
            dgvKetQuaNDH.DataSource = dtImportNote;
            isAllowSelection = true;
            for (i = 0; i < dtImportNote.Rows.Count; i++)
                if (id.ToString() == dtImportNote.Rows[i]["ID"].ToString())
                    break;
            isAllowSelection = false;
            dgvKetQuaNDH.ClearSelection();
            isAllowSelection = true;
            isActionValueChange = false;
            dgvKetQuaNDH.Rows[i].Selected = true;
            action = -1;
            isActionValueChange = true;
            dgvKetQuaNDH.FirstDisplayedScrollingRowIndex = i;
        }

        private void Disable()
        {
            txtSoDonHang.Enabled = false;
            txtTyGia.Enabled = false;
            dtpNgayDonHang.Enabled = false;
        }

        private void Enable()
        {
            txtSoDonHang.Enabled = true;
            txtTyGia.Enabled = true;
            dtpNgayDonHang.Enabled = true;
        }

        private void ShowNote(string note, Color foreColor)
        {
            lbKetQua.Visible = true;
            lbKetQua.ForeColor = foreColor;
            lbKetQua.Text = note;
        }

        #endregion


        #region------------------------------------------------ràng buộc dữ liệu-----------------------------------

        private bool ValidateData()
        {
            txtSoDonHang.Text = txtSoDonHang.Text.Trim();
            txtTyGia.Text = txtTyGia.Text.Trim();
            bool isValidate = true;
            if (txtSoDonHang.Text == "")
            {
                isValidate = false;
                errorProvider1.SetError(txtSoDonHang, "Bạn chưa nhập vào số hoá đơn");
            }
            if (txtTyGia.Text == "")
            {
                isValidate = false;
                errorProvider1.SetError(txtTyGia, "Bạn chưa nhập vào tỷ giá");
            }
            else
            {
                try
                {
                    double.Parse(txtTyGia.Text);
                }
                catch
                {
                    isValidate = false;
                    errorProvider1.SetError(txtTyGia, "Bạn chưa nhập tỷ giá không hợp lệ");
                }
            }
            return isValidate;
        }

        private void txtSoDonHang_TextChanged(object sender, EventArgs e)
        {
            //txtSoDonHang.Text = txtSoDonHang.Text.Trim();
            String SDHtmp = txtSoDonHang.Text.Trim();
            if (SDHtmp != "")
            {
                errorProvider1.SetError(txtSoDonHang, "");
                try
                {
                    double.Parse(txtTyGia.Text);
                }
                catch { return; }
                if (actionImportNote == 2)
                    btnLuu.Enabled = true;
            }
        }

        private void txtTyGia_TextChanged(object sender, EventArgs e)
        {
            try
            {
                double tygiaTmp = double.Parse(txtTyGia.Text);
                errorProvider1.SetError(txtTyGia, "");
                for (int i = 0; i < dgvNhapHangKinhDoanh.Rows.Count - 1; i++)
                {
                    if (dgvNhapHangKinhDoanh.Rows[i].Cells["TenHang"].Value != null && dgvNhapHangKinhDoanh.Rows[i].Cells["TenHang"].Value.ToString() != "")
                    {
                        if (dgvNhapHangKinhDoanh.Rows[i].Cells["FOBUSDNhap"].Value != null && dgvNhapHangKinhDoanh.Rows[i].Cells["FOBUSDNhap"].Value.ToString() != "")
                        {
                            dgvNhapHangKinhDoanh.Rows[i].Cells["NET1Nhap"].Value = (double.Parse(dgvNhapHangKinhDoanh.Rows[i].Cells["FOBUSDNhap"].Value.ToString()) * tygiaTmp);
                        }
                        else
                            if (dgvNhapHangKinhDoanh.Rows[i].Cells["FOBEURNhap"].Value != null && dgvNhapHangKinhDoanh.Rows[i].Cells["FOBEURNhap"].Value.ToString() != "")
                            {
                                dgvNhapHangKinhDoanh.Rows[i].Cells["NET1Nhap"].Value = (double.Parse(dgvNhapHangKinhDoanh.Rows[i].Cells["FOBEURNhap"].Value.ToString()) * tygiaTmp);
                            }

                        if (dgvNhapHangKinhDoanh.Rows[i].Cells["CIFUSDNhap"].Value != null && dgvNhapHangKinhDoanh.Rows[i].Cells["CIFUSDNhap"].Value.ToString() != "")
                        {
                            dgvNhapHangKinhDoanh.Rows[i].Cells["NET2Nhap"].Value = (double.Parse(dgvNhapHangKinhDoanh.Rows[i].Cells["CIFUSDNhap"].Value.ToString()) * tygiaTmp);
                        }
                        else
                            if (dgvNhapHangKinhDoanh.Rows[i].Cells["CIFEURNhap"].Value != null && dgvNhapHangKinhDoanh.Rows[i].Cells["CIFEURNhap"].Value.ToString() != "")
                            {
                                dgvNhapHangKinhDoanh.Rows[i].Cells["NET2Nhap"].Value = (double.Parse(dgvNhapHangKinhDoanh.Rows[i].Cells["CIFEURNhap"].Value.ToString()) * tygiaTmp);
                            }
                    }
                }
            }
            catch { return; }
            if (actionImportNote == 2)
            {
                btnLuu.Enabled = true;
                flagAction = false;
            }
        }

        #endregion


        #region---------------------------------------Thêm, xóa, sửa-----------------------------------------------

        private void LuuThongTin()
        {
            txtSoDonHang.Text = txtSoDonHang.Text.Trim();
            txtTyGia.Text = txtTyGia.Text.Trim();
            if (ValidateData() == false)
                return;

            /*Thêm loại hàng
             */
            if (actionImportNote == 0)
            {
                DataTable dtImportNote = ImportNote.GetImportNoteByCode(txtSoDonHang.Text);
                if (dtImportNote.Rows.Count > 0)
                {
                    MessageBox.Show("Đã đơn hàng với số hoá đơn này, vui lòng nhập lại");
                    return;
                }
                importNote = ImportNote.CreateImportNote(txtSoDonHang.Text, dtpNgayDonHang.Value, double.Parse(txtTyGia.Text), "", 1);
                if (importNote == null)
                {
                    MessageBox.Show("Chưa thêm đơn đặt hàng này được vui lòng thử lại sau ");
                    btnXoa.Enabled = false;
                    btnSua.Enabled = false;
                }
                else
                {
                    int itemID = 0, quantity = 0; //UT = 0, VAT = 0, TAX = 0, other = 0;
                    double FOBUSD = 0, FOBEUR = 0, CIFUSD = 0, CIFEUR = 0, KOREA = 0, HK = 0, ITALY = 0, TL = 0, otherCountry = 0, NET1 = 0,
                            NET2 = 0, sellingPrice = 0, profit1 = 0, profit2 = 0;
                    bool kqDetail = true;
                    for (int i = 0; i < dgvNhapHangKinhDoanh.Rows.Count - 1; i++)
                    {
                        GetDataOnDGVNhapHangKD(i, ref itemID, ref quantity, ref FOBUSD, ref FOBEUR, ref CIFUSD, ref CIFEUR, ref KOREA, ref HK, ref ITALY,
                                                ref TL, ref otherCountry, ref NET1, ref NET2, ref sellingPrice, ref profit1, ref profit2);

                        if (isValidateData == 0)
                        {
                            arrImportNoteDetailExist[ImportNoteDetailExistCount++] = ImportNoteDetail.CreateImportNoteDetail(importNote.ID,
                                                                    itemID, quantity, FOBUSD, FOBEUR, CIFUSD, CIFEUR, KOREA, HK,
                                                                    ITALY, TL, otherCountry, 0, 0, 0, 0, NET1, NET2, sellingPrice,
                                                                    profit1, profit2);
                            if (arrImportNoteDetailExist[ImportNoteDetailExistCount - 1] == null)
                                MessageBox.Show("Chưa thêm hàng nay được, vui lòng thử lại sau");
                            else
                            {
                                dgvNhapHangKinhDoanh.Rows[i].Cells["ID"].Value = arrImportNoteDetailExist[ImportNoteDetailExistCount - 1].ID;
                                dgvNhapHangKinhDoanh.Rows[i].Cells["ImportNoteID1"].Value = importNote.ID;
                                dgvNhapHangKinhDoanh.Rows[i].Cells["ItemCode"].Value = dgvNhapHangKinhDoanh.Rows[i].Cells["MaHang"].Value;
                                dgvNhapHangKinhDoanh.Rows[i].Cells["ItemName"].Value = dgvNhapHangKinhDoanh.Rows[i].Cells["TenHang"].Value;
                                dgvNhapHangKinhDoanh.Rows[i].Cells["ItemID"].Value = arrImportNoteDetailExist[ImportNoteDetailExistCount - 1].Item;
                            }
                        }
                        else
                        {
                            ShowErrorImputData(i + 1);    
                            kqDetail = false;
                            break;

                        }
                    }
                    if (kqDetail == true)
                    {
                        btnXoa.Enabled = true;
                        btnSua.Enabled = true;
                        LoadDataOnDataGridview();
                        ShowNote(" Thêm thành công đơn hàng này ", Color.Blue);
                    }
                    else
                        importNote.DeleteImportNote();
                }
            }

            if (actionImportNote == 2 && importNote != null)
            {
                if (txtSoDonHang.Text.Trim() != importNote.Code)
                {
                    DataTable dtImportNote = ImportNote.GetImportNoteByCode(txtSoDonHang.Text);
                    if (dtImportNote.Rows.Count > 0)
                    {
                        MessageBox.Show("Đã đơn hàng với số hoá đơn này, vui lòng nhập lại");
                        return;
                    }
                }
                int kq = importNote.UpdateImportNote(txtSoDonHang.Text, dtpNgayDonHang.Value, double.Parse(txtTyGia.Text), "");
                if (kq == 0)
                    MessageBox.Show("Tạm thời chưa sửa đổi được, vui lòng sửa sau ");
                else
                    if (kq == 1)
                    {
                        bool kqDetail = true;
                        if (isUpdateImportNoteDetail == true)
                        {
                            int itemID = 0, quantity = 0; //UT = 0, VAT = 0, TAX = 0, other = 0;
                            double FOBUSD = 0, FOBEUR = 0, CIFUSD = 0, CIFEUR = 0, KOREA = 0, HK = 0, ITALY = 0, TL = 0, otherCountry = 0, NET1 = 0,
                                    NET2 = 0, sellingPrice = 0, profit1 = 0, profit2 = 0;
                            for (int i = 0; i < dgvNhapHangKinhDoanh.Rows.Count - 1; i++)
                            {
                                GetDataOnDGVNhapHangKD(i, ref itemID, ref quantity, ref FOBUSD, ref FOBEUR, ref CIFUSD, ref CIFEUR, ref KOREA, ref HK, ref ITALY,
                                                        ref TL, ref otherCountry, ref NET1, ref NET2, ref sellingPrice, ref profit1, ref profit2);
                                if (isValidateData == 0)
                                {
                                    if (dgvNhapHangKinhDoanh.Rows[i].Cells["ID"].Value != null && dgvNhapHangKinhDoanh.Rows[i].Cells["ID"].Value.ToString() != "")
                                        arrImportNoteDetailExist[i].UpdateImportNote(itemID, quantity, FOBUSD, FOBEUR, CIFUSD, CIFEUR, KOREA, HK,
                                                                                    ITALY, TL, otherCountry, 0, 0, 0, 0, NET1, NET2, sellingPrice,
                                                                                    profit1, profit2);
                                    else
                                    {
                                        arrImportNoteDetailExist[ImportNoteDetailExistCount++] = ImportNoteDetail.CreateImportNoteDetail(importNote.ID,
                                                                            itemID, quantity, FOBUSD, FOBEUR, CIFUSD, CIFEUR, KOREA, HK,
                                                                            ITALY, TL, otherCountry, 0, 0, 0, 0, NET1, NET2, sellingPrice,
                                                                            profit1, profit2);
                                        if (arrImportNoteDetailExist[ImportNoteDetailExistCount - 1] != null)
                                        {
                                            dgvNhapHangKinhDoanh.Rows[i].Cells["ID"].Value = arrImportNoteDetailExist[ImportNoteDetailExistCount - 1].ID;
                                            dgvNhapHangKinhDoanh.Rows[i].Cells["ImportNoteID1"].Value = importNote.ID;
                                            dgvNhapHangKinhDoanh.Rows[i].Cells["ItemCode"].Value = dgvNhapHangKinhDoanh.Rows[i].Cells["MaHang"].Value;
                                            dgvNhapHangKinhDoanh.Rows[i].Cells["ItemName"].Value = dgvNhapHangKinhDoanh.Rows[i].Cells["TenHang"].Value;
                                            dgvNhapHangKinhDoanh.Rows[i].Cells["ItemID"].Value = arrImportNoteDetailExist[ImportNoteDetailExistCount - 1].Item;
                                        }
                                    }
                                }
                                else
                                {
                                    ShowErrorImputData(i + 1);
                                    kqDetail = false;
                                    break;

                                }
                            }
                            
                        }
                        if (kqDetail == true)
                        {
                            isUpdateImportNoteDetail = false;
                            LoadDataOnDataGridview();
                            ShowNote("Đã cập nhật thông tin cho đơn hàng ", Color.Blue);
                            flagAction = true;
                        }
                    }
            }
        }
        private void btnLuu_Click(object sender, EventArgs e)
        {
            LuuThongTin();
        }

        private void ThemMoi()
        {
            ShowNote("Nhập thông tin cho đơn hàng", Color.Green);
            importNote = null;
            actionImportNote = 0;
            Enable();
            txtSoDonHang.Text = "";
            txtTyGia.Text = "";
            dtpNgayDonHang.Value = DateTime.Now;
            DataTable dtImportNoteDetail = ImportNoteDetail.GetImportNoteDetailByImportNote(0);
            dgvNhapHangKinhDoanh.DataSource = dtImportNoteDetail;
            txtSoDonHang.Focus();
            isAllowSelection = false;
            dgvKetQuaNDH.ClearSelection();
            isAllowSelection = true;
            btnLuu.Enabled = true;
            btnSua.Enabled = false;
            btnXoa.Enabled = false;
            txtSoDonHang.Text = ImportNote.GetImportNoteNo(dtpNgayDonHang.Value);
        }
        private void btnThem_Click(object sender, EventArgs e)
        {
            ThemMoi();
        }

        private void SuaThongTinDonhang()
        {
            if (importNote != null)
            {
                ShowNote("Cập nhật thông tin mới cho đơn hàng", Color.Green);
                actionImportNote = 2;
                Enable();
                btnLuu.Enabled = false;
                btnXoa.Enabled = false;
                btnSua.Enabled = false;
            }
        }
        private void btnSua_Click(object sender, EventArgs e)
        {
            SuaThongTinDonhang();
        }
        private void dgvKetQuaNDH_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            if (e.RowIndex != -1)
                SuaThongTinDonhang();
        }

        private void Xoa()
        {
            if (actionImportNote != 0 && actionImportNote != 2 && ImportNoteDeleteCount > 0)
            {
                DialogResult result = DialogResult;
                if (ImportNoteDeleteCount == 1)
                    result = MessageBox.Show("Bạn muốn xoá hoá đơn số đơn hàng: " + arrImportNoteDeleted[0].Code + "", "Xoá", MessageBoxButtons.YesNo);
                if (ImportNoteDeleteCount > 1)
                    result = MessageBox.Show("Bạn muốn xoá danh sách hoá đơn này", "Xoá", MessageBoxButtons.YesNo);
                if (result == System.Windows.Forms.DialogResult.Yes)
                {
                    for (int i = 0; i < ImportNoteDeleteCount; i++)
                    {
                        int kq = arrImportNoteDeleted[i].DeleteImportNote();
                        if (kq == 0)
                            MessageBox.Show("Chưa xoá được số hoá đơn này, vui lòng thử lại sau");
                    }
                    dgvKetQuaNDH.DataSource = ImportNote.ListImportNote(1);
                    if (dgvKetQuaNDH.Rows.Count == 0)
                        ThemMoi();
                }
            }
        }
        private void btnXoa_Click(object sender, EventArgs e)
        {
            Xoa();   
        }

        #endregion


        #region-------------------------------------------xử lý phím nóng------------------------------------------
        private void txtSoDonHang_KeyDown(object sender, KeyEventArgs e)
        {
            NewFrmDichVu_KeyDown(this, e);
        }

        private void dtpNgayDonHang_KeyDown(object sender, KeyEventArgs e)
        {
            NewFrmDichVu_KeyDown(this, e);
        }

        private void txtTyGia_KeyDown(object sender, KeyEventArgs e)
        {
            NewFrmDichVu_KeyDown(this, e);
        }

        private void btnThem_KeyDown(object sender, KeyEventArgs e)
        {
            NewFrmDichVu_KeyDown(this, e);
        }

        private void btnLuu_KeyDown(object sender, KeyEventArgs e)
        {
            NewFrmDichVu_KeyDown(this, e);
        }

        private void btnXoa_KeyDown(object sender, KeyEventArgs e)
        {
            NewFrmDichVu_KeyDown(this, e);
        }

        private void btnSua_KeyDown(object sender, KeyEventArgs e)
        {
            NewFrmDichVu_KeyDown(this, e);
        }

        private void btnThoat_KeyDown(object sender, KeyEventArgs e)
        {
            NewFrmDichVu_KeyDown(this, e);
        }

        private void NewFrmDichVu_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyValue == 113 || e.KeyValue == 13)//F2
                if (actionImportNote == 0 || (actionImportNote == 2 && flagAction == false))
                    LuuThongTin();
            if (e.KeyValue == 114)//F3
                ThemMoi();
            if (e.KeyValue == 115)//F4
                SuaThongTinDonhang();
            if (e.KeyValue == 119)//F8
                Xoa();
        }
        #endregion
    }
}